/**
 * setCookie : 设置cookie
 * @param {string} key 要设置的cookie的键名
 * @param {string} val 要设置的cookie的值
 * @param {number} day 要设置几天以后过期,默认会话时效
 **/
function setCookie(key, val, day) {
    if (day) {
        let time = new Date();
        time.setTime(time.getTime() - 8 * 60 * 60 * 1000 + day * 24 * 60 * 60 * 1000);
        document.cookie = `${key}=${val};expires=${time};path='/'`;
    } else {
        document.cookie = `${key}=${val}`;
    }
}

/**
 * removeCookie: 删除cookie
 * @param {string} key 要删除的cookie的键名
 **/
function removeCookie(key) {
    setCookie(key, 1, -1);
}

/**
 * getCookie: 获取单个cookie的值
 * @param {string} key 要获取的cookie的键名
 * @return 获取到的值
 **/
function getCookie(key) {
    let arr = document.cookie.split('; ');
    for (let i = 0; i < arr.length; i++) {
        var tempkey = arr[i].split('=');
        if (tempkey[0] == key) {
            return tempkey[1];
        }
    }
}

/**
 * getSend : 发送get的ajax请求
 * @param {string} url 拼接好请求参数的路径
 * @param {function} cb 请求完成以后执行的回调函数
 **/

function getSend(url, cd) {
    let xhr = new XMLHttpRequest();
    xhr.open("GET", url);
    xhr.onload = function () {
        cd(xhr.responseText);
    }
    xhr.send();
}
/**
 * postSend : 发送post的ajax请求
 * @param {string} url 请求路径
 * @param {function} cb 请求完成以后执行的回调函数
 * @param {string} data 请求主体
 **/
function postSend(url, cd, data) {
    let xhr = new XMLHttpRequest();
    xhr.open("POST", url);
    xhr.onload = function () {
        cd(xhr.responseText)
    }
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
    xhr.send(data);
}


/**
 * storage : 设置和获取本地存储的数据
 * @param {function} get 获取本地存储数据
 * @param {function} set 设置本地存储数据
 */
const storage = {
    /**
     * @param {String} key 要获取的数据的键
     */
    get: function (key) {
        return JSON.parse(localStorage.getItem(key)) || []
    },
    /**
     * @param {String} key 要设置的数据的键
     * @param {object} obj 要设置的数据
     */
    set: function (key, obj) {
        let arr = this.get(key)
        arr.push(obj)
        localStorage.setItem(key, JSON.stringify(arr))
    },
    info: function (key, arr) {
        localStorage.setItem(key, JSON.stringify(arr))
    }
}

//用户的增删改查
const operUser = {
    add: function (nuser, npwd, nname) {
        storage.set('RT', {
            "user": nuser,
            "pwd": npwd,
            "name": nname,
            "type": '1'
        })
    },
    del: function (nuser) {
        var arr = storage.get("RT")
        arr.forEach(function (item, index) {
            if (nuser == item['user']) {
                arr.splice(index, 1)
                storage.info('RT', arr);
            }
        })
    },
    modify: function (nuser, npwd, nname) {
        var arr = storage.get("RT")
        arr.forEach((item) => {
            if (nuser == item['user']) {
                item['pwd'] = npwd;
                item['name'] = nname;
            }
        })
        storage.info('RT', arr)
    },
    see: function (nuser) {
        var flag = true;
        storage.get('RT').forEach((item) => {
            if (nuser == item['user']) {
                flag = false;
            } 
        })
        console.log(flag);
        return flag
    }
}
// 文章的增删改查
const operAtr = {
    add: function (nuser, nname, title, con) {
        var timer = new Date()
        console.log();
        storage.set('RW', {
            'rid': nuser + timer.getTime(),
            'ruser': nuser,
            'rname': nname,
            'rtitle': title,
            'rcon': con,
            'rcom': [],
            'rtime': timer.getTime()
        })
    },
    modify:function(nuser,nid,ntitle,ncon){
        var arr = storage.get("RW")
        arr.forEach((item)=>{
            if(nuser == item['ruser'] && nid == item['rid']){
                item['rtitle'] = ntitle
                item['rcon'] = ncon
            }
        })
        storage.info('RW',arr)
    },
    del:function(nuser,nid){
        var arr = storage.get("RW")
        arr.forEach(function (item, index) {
            if (nuser == item['ruser'] && nid == item['rid']) {
                arr.splice(index, 1)
                storage.info('RW', arr);
            }
        })
    },
    see:function(nuser){
        var arr = []
        storage.get('RW').forEach(item=>{
            if(item['ruser']==nuser){
                arr.push(item);
            }
        })
        return arr
    }
}

/**
 * 把时间戳转换转换成指定格式的时间
 * @param {String} format 四种格式 'yyyy-mm-dd','yyyy-mm-dd HH:MM:SS','yyyy/mm/dd','yyyy/mm/dd HH:MM:SS'
 * @param {String} str 时间戳
 * @returns 
 */
function getDate(format, str) {
    let oDate = new Date(str),
    oYear = oDate.getFullYear(),
    oMonth = oDate.getMonth() + 1,
    oDay = oDate.getDate(),
    oHour = oDate.getHours(),
    oMin = oDate.getMinutes(),
    oSec = oDate.getSeconds(),
    oTime = '';

    //补0操作  
    function getzf(num) {
        if (parseInt(num) < 10) {
            num = '0' + num;
        }
        return num;
    }

    if (format == 'yyyy-mm-dd') {
        oTime = oYear + '-' + getzf(oMonth) + '-' + getzf(oDay); //最后拼接时间
    } else if (format == 'yyyy/mm/dd') {
        oTime = oYear + '/' + getzf(oMonth) + '/' + getzf(oDay); //最后拼接时间
    } else if(format == 'yyyy-mm-dd HH:MM:SS'){
        oTime = oYear + '-' + getzf(oMonth) + '-' + getzf(oDay) + ' ' + getzf(oHour) + ':' + getzf(oMin) + ':' + getzf(oSec); //最后拼接时间
    } else if(format == 'yyyy/mm/dd HH:MM:SS'){
        oTime = oYear + '/' + getzf(oMonth) + '/' + getzf(oDay) + ' ' + getzf(oHour) + ':' + getzf(oMin) + ':' + getzf(oSec); //最后拼接时间
    }else{
        oTime = '格式错误'
    }
    return oTime;
};


//! 临时封装bootstrap工具提示方法
/**
 * 
 * @param {dom} dom 节点
 * @param {string} dt bootstrap插件类型
 * @param {string} con 提示内容
 * @param {string} dir 提示方向
 */
function ts(dom, dt, con, dir) {
    $(`${dom}`).attr({
        'data-toggle': dt,
        title: con,
        'data-original-title': con,
        'data-placement': dir
    })
    $(`${dom}`)[dt]('show')
    setTimeout(() => {
        $(`${dom}`).attr({
            'data-toggle': '',
            title: '',
            'data-original-title': '',
            'data-placement': ''
        })
        $(`${dom}`)[dt]('hide')
    }, 2000)
}